/*
 * @Descripttion: 
 * @version: 
 * @Author: Indolphin
 * @Date: 2021-03-12 22:43:58
 * @LastEditors: Indolphin
 * @LastEditTime: 2021-03-14 02:44:39
 */
/**
 * API服务
 * @author Indolphin
 */

import axios from 'axios';
import { RequestData } from '../interface';
import storage from '../utils/storeage';
/**
 * 用户登录请求
 * 
 * @param url 请求URL
 * @param data 请求数据
 * @param method 请求方法 
 * @returns 
 */
export const loginRequest = ({url, data, method}: RequestData) => {
    //统一处理异常信息
    return new Promise((resolve, reject) =>{
        let promise;
        // 1、执行ajax请求
        promise = axios.request({
            auth: {
                //Oauth2 Client ID
                username: 'user-client',
                //Oauth2 Client Secret
                password: 'user-secret-8888'
            },
            // x-www-form-urlencoded方式参数必须这样传（Post方式）
            data:'username='+data.username+'&password='+data.password,
            url:url,
            method: method,
            params: {
                grant_type:'password',
            },
            headers:{
                'content-type':'application/x-www-form-urlencoded'
            }
        });
        //2、请求成功则调用resolve(value)
        promise.then((response)=>{
            const { code, data, message } = response.data;
            if(code == 0) {
                resolve(data);
            } else {
                reject(message);
            }
        }).catch((error)=>{
            console.log('error ->',error)
            //3、请求失败则不调用reject，而是提示错误信息
            //message.error('请求出错：' + error.message)
        })
    });
}

/**
 * 数据请求，携带token
 * 
 * @param url 请求URL
 * @param data 请求数据
 * @param method 请求方式
 */
export const dataRequest = ({url, data = {}, method = "POST"}: RequestData) => {

    //统一处理异常信息
    return new Promise((resolve, reject) =>{
        let promise;

        // 从浏览器内存中获取用户token
        const token = storage.getAccessToken();

        // 1、执行ajax请求
        promise = axios.request({
            data: data,
            url: url,
            method: method,
            headers:{
                'Authorization':'Bearer ' + token
            }
        });

        //2、请求成功则调用resolve(value)
        promise.then((response)=>{
            const { code, message, data } = response.data;
            if(code == 0) {
                resolve(data)
            } else {
                reject(message);
            }
        }).catch((error)=>{
            console.log("error = ", error);
            reject("服务不可用");
        })
    });
}